home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
tools
/
rb
/
jlcd100.lzh
/
JLCD
/
JLCDCALL.MAC
next >
Wrap
Text File
|
1997-12-28
|
5KB
|
159 lines
.ifndef __JLCDCALL__
__JLCDCALL__ equ 1
JLCD .macro num
move.l #$4A00+(num),d1
moveq.l #$3B,d0 ;_JOYGET
trap #$0F ;IOCS
.endm
_JLCD_VER equ $00 ;常駐およびバージョンのチェック
_JLCD_INIT equ $01 ;初期化
_JLCD_STOP equ $02 ;停止
_JLCD_INST equ $03 ;命令(教えこむ)
_JLCD_FONT equ $04 ;外字定義
_JLCD_PRINT equ $05 ;表示
_JLCD_PRINT2 equ $06 ;表示2
*-----------------------------------------------
* 確認 _JLCD_VER
*-----------------------------------------------
*
* in d1.l = $4A00
*
* out d0.w == $4A4C
* != $4A4C エラー
* d0.l(上位ワード) == バージョン $0100
*
* 戻り値が $4A4C であれば、JLCDDRV が登録されている。
* ポートに対してそれぞれ反応が違うことに注意。
*
*-----------------------------------------------
* 初期化 _JLCD_INIT
*-----------------------------------------------
*
* in d1.l = $4A01
* d2.l = モード
* -1; アプリ使用状況のみチェック
* 0; 白窓通常モード。8255 の初期化と時計、
* 白窓を行う。
* 1; 白窓スタンバイ状態。8255 の初期化後、
* ロゴを出すだけでなにもしない。
*
* out d0.l == 0 ; 初期化成功
* 1 ; 他のアプリが使用している(d2=1,-1 の時のみ)
*
*
* モード 0 の場合 LCD を初期化し、時計にする。登録されてい
*る外字の再登録もする。シフトキー+[BS]でもこれと同じ。
*
* モード 1 の場合 LCD を初期化し、占領する。アプリで
*常時占領する場合はこれで LCD を占領すること。でないと、
*時計が表示されます(笑)。ただし、途中で LCD がハングっ
*た場合(復活は シフトキー+[BS]で出来る)、
*
*-----------------------------------------------
* 停止 _JLCD_STOP
*-----------------------------------------------
* in d1.l = $4A02
*
* out d0.l == 0 ; 停止成功
*
* JLCDDRV の動作を停止します。JOY PORT を使う他の
*ソフトを使う場合、停止して下さい。シフトキー+[BS]
* でもこれと同じ。
*
*-----------------------------------------------
* 命令 _JLCD_INST
*-----------------------------------------------
* in d1.l = $4A03
* d2.l = 0 ; なにもしない。戻り値のみを確認したい時用。
* 1 ; 全画面クリア。表示座標を $00(0,0)に。
* 2 ; 表示座標を $00(0,0)にし、シフトしていた表示も元に戻す。
* など、インストラクション設定(後述)
*
* out d0.l == 0 ; 成功
* 1 ; なんかの都合で LCD が破壊された。命令は実行している。
* -2 ; JLCDDRV が停止している
*
* LCD にコントロール命令を出します。LCD を占領(初期
*化1 の d2=1)していない場合、基本的に使わないで下さい。
*命令によっては時計表示に支障をきたす可能性もあります。
*
*-----------------------------------------------
* 外字定義 _JLCD_FONT
*-----------------------------------------------
* in d1.l = $4A04
* d2.l = 外字 No.(0~7)
* (a1) = 外字イメージ 8byte
*
* out d0.l == 0 ; 成功
* -2 ; JLCDDRV が停止している
*
* 外字を登録します。
*
* 外字 No.6,7 は白窓(エラー)で使用してしまいま
*す。アプリ使用中(LCD 占領)でも No.6,7 は破壊
*されることがあります。
*
*-----------------------------------------------
* 文字列表示 _JLCD_PRINT
*-----------------------------------------------
* in d1.l = $4A05
* d2.l = 座標
* (a1) = 表示文字列
*
* out d0.l == 0 ; 正常終了
* -1 ; 白窓や PRINT2 で表示しているので表示出来ない
* -2 ; 停止している
*
* 指定座標から文字列を表示します。bit 31 が 1 なら LCD
*をクリアしてから表示します。
* 座標に -1 を指定した場合、続きから書きます。ただし、改
*行はしません。また外字登録を行うと座標は初期化($00)さ
*れてしまうので注意。
*
* 基本的にこのコールは LCD を占領しているソフトがつかう
*ものです。占領せず、一時的に一定時間表示させたい場合は
*$4A60 を使用して下さい。
*
*-----------------------------------------------
* 文字列表示2 _JLCD_PRINT2
*-----------------------------------------------
* in d1.l = $4A06
* d2.l = 座標
* d3.l = タイム
* (a1) = 表示文字列
*
* out d0.l == 0 ; 正常終了
* -1 ; 白窓を表示しているので表示出来ない
* -2 ; JLCDDRV が停止している
*
* 指定座標から文字列を表示します。bit 31 が 1 なら LCD
*をクリアしてから表示します。
* 座標に -1 を指定した場合、続きから書きます。
* 1行目の端まで来たら2行目に改行します。ただし改行判定の
*ため表示座標はかならずこのコールの d2 で指定して下さい。CALL5
*で指定したものや、CALL3 により座標を指定した場合は思ったとこ
*ろで改行してくれないことがあります。
*
* タイムが1以上ならそのタイム時間(単位 1/100s)
*表示し続け、その後初期化します。0 なら消去はせずずっと表示
*しておきます。ただし、LCD を占領していない場合、時計に消され
*ることになります(時計の左側は書き替えないためサンプルの
*JLCDCON1 のように使えます)。
*
* 他のプログラムが LCD を占領している場合でも、この CALL
*で表示してしまうことが出来ます。本コールで表示中は他の表示
*($4A05)を制限することが出来ます。
*
.endif